#ifndef MAPITEM_H
#define MAPITEM_H

#include "fruit.h"
#include "block.h"
#include "door.h"

class MapItem
{
public:
    MapItem();
    MapItem(FixedUnit *unit);
    ~MapItem();

    FixedUnit *getUnitAt(int pos);
    int getNbUnits();
    int getRow();
    int getColumn();

    void setRow(int i);
    void setColumn(int j);

    void addUnit(FixedUnit *unit);
    void removeUnitAt(int pos);
    int findUnit(Unit::Type type);
    bool isEmpty();
    void draw(QPainter *painter);
    void serializeDebug(QDebug &dbg);
    void serializeIn(QDataStream &in);
    void serializeOut(QDataStream &out);
    static FixedUnit* makeFixedUnit(int type);

private:
    int row;
    int column;
    QList<FixedUnit*> m_units;
};

#endif // MAPITEM_H


QDataStream & operator << (QDataStream &out, MapItem *item);
QDataStream & operator >> (QDataStream &in, MapItem *item);
QDebug operator<<(QDebug dbg,  MapItem *item);
